import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;
public class ChessJFrame extends JFrame {
    private ChessBord chessBord; //声明一个棋盘对象
    private JPanel tool;         //声明一个面板对象tool，用来放三个按钮
    private JButton ButtonRedo; //声明重新开始按钮
    private JButton ButtonUndo;  //声明悔棋按钮
    private JButton ButtonExit;  //声明退出按钮
    //这里添加ChessJFrame()构造方法
    public ChessJFrame() {//构造方法
        setTitle("单机版五子棋");  //设置标题

        //JFrame中有两个对象
        chessBord=new ChessBord();  //棋盘对象
        tool=new JPanel();  //面板对象

        //tool中有三个按钮对象
        ButtonRedo=new JButton("重新开始");  //设置重新开始按钮
        ButtonUndo=new JButton("悔棋");  //设置悔棋按钮
        ButtonExit=new JButton("结束游戏");//设置退出游戏按钮

        //实现监听
        MyButtonLister mb=new MyButtonLister();
        ButtonRedo.addActionListener(mb);
        ButtonUndo.addActionListener(mb);
        ButtonExit.addActionListener(mb);

        //设置三个按钮的文字字体为黑体26号
        Font f=new Font("黑体", Font.PLAIN,26); //声明黑体26号字字体对象
        ButtonRedo.setFont(f);
        ButtonUndo.setFont(f);
        ButtonExit.setFont(f);

        tool.setLayout(new FlowLayout(FlowLayout.CENTER ));//流式布局,居中对齐

        //将三个按钮添加到面板对象
        tool.add(ButtonRedo);
        tool.add(ButtonUndo);
        tool.add(ButtonExit);

        //将棋盘对象添加到当前窗体中
        add(chessBord);

        //按钮所在的面板tool添加到当前窗体的南部
        add(tool,BorderLayout.SOUTH);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置关闭方式为:关闭时退出程序
        pack();//自适应,窗体大小自动设置为适合子组件的大小和布局
    }

    public static void main(String[] args) {//主方法，程序从这里执行
        ChessJFrame jf=new ChessJFrame();  //声明实例化主窗口对象
        jf.setLocationRelativeTo(null);    //将主窗口显示在屏幕中央
        jf.setVisible(true);  //将主窗口设置为可见
    }

    private class MyButtonLister implements ActionListener{//按钮处理事件类
        public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub
            Object obj=e.getSource();//获取事件源
            if(obj==ButtonRedo) {    //事件源是“重新开始”按钮
                chessBord.restartGame();//调用chessBord的restartGame()方法
            }
            else if(obj==ButtonUndo) {//事件源是“悔棋”按钮
                chessBord.goBack();
            }
            else if(obj==ButtonExit) {//事件源是“结束游戏”按钮
                System.exit(0);  //调用系统exit()方法，退出程序
            }
        }
    }

}

